package com.example.HL7.v24.message;

import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.AbstractMessage;
import ca.uhn.hl7v2.model.v24.segment.MSH;
import ca.uhn.hl7v2.parser.DefaultModelClassFactory;
import ca.uhn.hl7v2.parser.ModelClassFactory;
import com.example.HL7.v24.segment.ZDS;

/**
 * @author luzihao
 * @date 2021/3/17 11:05 上午
 * @Description 自定义HL7消息，自定义消息需继承 AbstractMessage
 */
public class ZDY_RES extends AbstractMessage {

    public ZDY_RES() {
        this(new DefaultModelClassFactory());
    }

    public ZDY_RES(ModelClassFactory theFactory) {
        super(theFactory);
        //已定义初始化
        this.init();
    }

    private void init() {
        try {
            //1.MSH段，不可为空，不可重复，在第一位，下标0开始
            this.add(MSH.class, true, false, 0);
            //2.ZDS段，不可为空，不可重复，在第二位
            this.add(ZDS.class, true, false, 1);
        } catch (HL7Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 需要覆盖此方法，返回自定义HL7消息中的版本号
     * @return
     */
    @Override
    public String getVersion() {
        return "2.4";
    }

    public MSH getMSH() {
        return getTyped("MSH", MSH.class);
    }

    /**
     * 获取ZDS段
     * @return
     */
    public ZDS getZDS() {
        /**
         * 俩参数
         * 1.自定义段名 ZDS
         * 2.自定义段类 ZDS.class
         */
        return getTyped("ZDS", ZDS.class);
    }

}
